home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / misc / interfaces3_5.lha / Interfaces / Serial.mod < prev    next >
Text File  |  1994-03-05  |  5KB  |  140 lines

  1. (*
  2. (*
  3. **  Amiga Oberon Interface Module:
  4. **  $VER: Serial.mod 40.15 (28.12.93) Oberon 3.0
  5. **
  6. **   © 1993 by Fridtjof Siebert
  7. *)
  8. *)
  9.  
  10. MODULE Serial;   (* $Implementation- *)
  11.  
  12. IMPORT e * := Exec;
  13.  
  14. TYPE
  15.  
  16.                    (* array of termination char's *)
  17.                    (* to use,see serial.doc setparams *)
  18.  
  19.   IOTArrayPtr * = UNTRACED POINTER TO IOTArray;
  20.   IOTArray * = ARRAY 8 OF CHAR;
  21.  
  22. CONST
  23.  
  24.   defaultCtlChar * = 011130000H;    (* default chars for xON,xOFF *)
  25. (* You may change these via SETPARAMS.  At this time, parity is not
  26.    calculated for xON/xOFF characters.  You must supply them with the
  27.    desired parity. *)
  28.  
  29. TYPE
  30.  
  31. (******************************************************************)
  32. (* CAUTION !!  IF YOU ACCESS the serial.device, you MUST (!!!!) use an
  33.    IOExtSer-sized structure or you may overlay innocent memory !! *)
  34. (******************************************************************)
  35.  
  36.   IOExtSerPtr * = UNTRACED POINTER TO IOExtSer;
  37.   IOExtSer * = STRUCT (ioSer * : e.IOStdReq)
  38.  
  39. (*     STRUCT   MsgNode
  40. *   0   APTR     Succ
  41. *   4   APTR     Pred
  42. *   8   UBYTE    Type
  43. *   9   UBYTE    Pri
  44. *   A   APTR     Name
  45. *   E   APTR     ReplyPort
  46. *  12   UWORD    MNLength
  47. *     STRUCT   IOExt
  48. *  14   APTR     io_Device
  49. *  18   APTR     io_Unit
  50. *  1C   UWORD    io_Command
  51. *  1E   UBYTE    io_Flags
  52. *  1F   UBYTE    io_Error
  53. *     STRUCT   IOStdExt
  54. *  20   ULONG    io_Actual
  55. *  24   ULONG    io_Length
  56. *  28   APTR     io_Data
  57. *  2C   ULONG    io_Offset
  58. *
  59. *  30 *)
  60.     ctlChar * : LONGINT;    (* control char's (order = xON,xOFF,INQ,ACK) *)
  61.     rBufLen * : LONGINT;    (* length in bytes of serial port's read buffer *)
  62.     extFlags * : LONGSET;   (* additional serial flags (see bitdefs below) *)
  63.     baud * : LONGINT;       (* baud rate requested (true baud) *)
  64.     brkTime * : LONGINT;    (* duration of break signal in MICROseconds *)
  65.     termArray * : IOTArray; (* termination character array *)
  66.     readLen * : SHORTINT;   (* bits per read character (# of bits) *)
  67.     writeLen * : SHORTINT;  (* bits per write character (# of bits) *)
  68.     stopBits * : SHORTINT;  (* stopbits for read (# of bits) *)
  69.     serFlags * : SHORTSET;  (* see SerFlags bit definitions below  *)
  70.     status * : SET;
  71.   END;
  72.    (* status of serial port, as follows:
  73. *                  BIT  ACTIVE  FUNCTION
  74. *                   0    ---    reserved
  75. *                   1    ---    reserved
  76. *                   2    high   Connected to parallel "select" on the A1000.
  77. *                               Connected to both the parallel "select" and
  78. *                               serial "ring indicator" pins on the A500
  79. *                               & A2000.  Take care when making cables.
  80. *                   3    low    Data Set Ready
  81. *                   4    low    Clear To Send
  82. *                   5    low    Carrier Detect
  83. *                   6    low    Ready To Send
  84. *                   7    low    Data Terminal Ready
  85. *                   8    high   read overrun
  86. *                   9    high   break sent
  87. *                  10    high   break received
  88. *                  11    high   transmit x-OFFed
  89. *                  12    high   receive x-OFFed
  90. *               13-15           reserved
  91. *)
  92.  
  93. CONST
  94.  
  95.   query       * = e.nonstd;       (* 09H *)
  96.   break       * = e.nonstd+1;     (* 0AH *)
  97.   setparams   * = e.nonstd+2;     (* 0BH *)
  98.  
  99.  
  100.   xDisabled  * = 7;       (* serFlags xOn-xOff feature disabled bit *)
  101.   eofMode    * = 6;       (*    "     EOF mode enabled bit *)
  102.   shared     * = 5;       (*    "     non-exclusive access bit *)
  103.   radBoogie  * = 4;       (*    "     high-speed mode active bit *)
  104.   queuedBrk  * = 3;       (*    "     queue this Break ioRqst *)
  105.   sevenWire  * = 2;       (*    "     RS232 7-wire protocol *)
  106.   partyOdd   * = 1;       (*    "     parity feature enabled bit *)
  107.   partyOn    * = 0;       (*    "     parity-enabled bit *)
  108.  
  109. (* These now refect the actual bit positions in the io_Status UWORD *)
  110.   xOffRead   * = 12;      (* status receive currently xOFF'ed bit  *)
  111.   xOffWrite  * = 11;      (*    "   transmit currently xOFF'ed bit *)
  112.   readBreak  * = 10;      (*    "   break was latest input bit     *)
  113.   wroteBreak * =  9;      (*    "   break was latest output bit    *)
  114.   overRun    * =  8;      (*    "   status word RBF overrun bit    *)
  115.  
  116.  
  117.   mSpOn     * = 1;        (* io_ExtFlags. Use mark-space parity, *)
  118.                           (*          instead of odd-even. *)
  119.   mark      * = 0;        (*    "     if mark-space, use mark *)
  120.  
  121.  
  122. (* SerErrs: *)
  123.   devBusy        * =  1;
  124.   baudMismatch   * =  2;  (* baud rate not supported by hardware *)
  125.   bufErr         * =  4;  (* Failed to allocate new read buffer *)
  126.   invParam       * =  5;
  127.   lineErr        * =  6;
  128.   parityErr      * =  9;
  129.   timerErr       * = 11;  (*(See the serial/OpenDevice autodoc)*)
  130.   bufOverflow    * = 12;
  131.   noDSR          * = 13;
  132.   detectedBreak  * = 15;
  133.  
  134.  
  135.   serialName * = "serial.device";
  136.  
  137. END Serial.
  138.  
  139.  
  140.